#ifndef DEFINICIONES_HSCAR_H
#define DEFINICIONES_HSCAR_H

typedef unsigned int boolean;

#define false 0
#define true (!false)
//************** DEFINICIONES TIMEOUTS **************************
#define USB_RX_MAX_BYTE_DELAY 100
#define USB_RX_MAX_RESP_DELAY 500

//*********** DEFINICIONES MAQUINA ESTADOS **********************
#define HSCAR_COMM_ESTADO_CABECERA      1
#define HSCAR_COMM_ESTADO_COMANDO		2
#define HSCAR_COMM_ESTADO_NBYTES		3
#define HSCAR_COMM_ESTADO_NO_NBYTES     4
#define HSCAR_COMM_ESTADO_BUCLE			5
#define HSCAR_COMM_ESTADO_CRC           6

//Cabecera protocolo
#define HSCAR_COMM_CABECERA                     0xAA

// Comandos del protocolo
#define HSCAR_COMM_COMANDO_ACK                  0xF5
#define HSCAR_COMM_COMANDO_NACK                 0xFA

// Comandos de control cortos
#define HSCAR_COMM_COMANDO_STOP                 0x5A
#define HSCAR_COMM_COMANDO_CONTROL_MANUAL       0x02
#define HSCAR_COMM_COMANDO_LEE_BARRAS           0x06

// Comandos de control largos
#define HSCAR_COMM_COMANDO_MAPEO_DIRECC         0x03
#define HSCAR_COMM_COMANDO_MAPEO_ACELER         0x04
#define HSCAR_COMM_COMANDO_LOOPBACK             0x05

//Respuestas largas
#define HSCAR_COMM_RESPUESTA_LEE_BARRAS         0x07



#define HSCAR_COMM_ES_COMANDO_CORTO(COMANDO) (((COMANDO) == HSCAR_COMM_COMANDO_ACK) 	|| \
    ((COMANDO) == HSCAR_COMM_COMANDO_NACK)	|| \
    ((COMANDO) == HSCAR_COMM_COMANDO_STOP) 	|| \
    ((COMANDO) == HSCAR_COMM_COMANDO_CONTROL_MANUAL) || \
    ((COMANDO) == HSCAR_COMM_COMANDO_LEE_BARRAS) \
    )

#define HSCAR_COMM_ES_COMANDO_LARGO(COMANDO) (((COMANDO) == HSCAR_COMM_COMANDO_MAPEO_DIRECC)	|| \
    ((COMANDO) == HSCAR_COMM_COMANDO_MAPEO_ACELER)  || \
    ((COMANDO) == HSCAR_COMM_COMANDO_LOOPBACK)      || \
    ((COMANDO) == HSCAR_COMM_RESPUESTA_LEE_BARRAS)      \
    )

#endif

